perm filename GDPY[G,BGB] blob
sn#053588 filedate 1973-07-14 generic text, type T, neo UTF8
COMMENT ⊗ VALID 00007 PAGES
RECORD PAGE DESCRIPTION
00001 00001
00002 00002 SUBR(IIIDPY,WINDOW,GLASS) Display device routine. *
00004 00003 SUBR(YDPY,NODE)
00007 00004 SUBR(VDPY,VERTEX) SPECIAL VERTEX DISPLAY *
00008 00005 SUBR(EDPY,EDGE) SPECIAL EDGE DISPLAY *
00009 00006 SUBR(FDPY,FACE) Special Face display *
00011 00007 SUBR(IDPY,NODE) Identifier display. *
00013 ENDMK
⊗;
SUBR(IIIDPY,WINDOW,GLASS) ;Display device routine. *
E←←16
;DISPLAY WINDOW FRAME.
LAC 1,WINDOW
NIP 1(1)↔DAC XL ;PICK UP 2D CLIPPER WINDOW
NAP 1(1)↔DAC XH
NIP 2(1)↔DAC YL
NAP 2(1)↔DAC YH
CALL(DPYSET,DPYBUF) ;NEW POG
CALL(AIVECT,XL,YL) ;MAKE A BOARDER
CALL(AVECT,XH,YL)
CALL(AVECT,XH,YH)
CALL(AVECT,XL,YH)
CALL(AVECT,XL,YL)
;DISPLAY THE VISIBLE EDGE LIST.
LAC E,WINDOW
NCAMR E,E↔PWRLD E,E ;GET THE WORLD.
JUMPE E,L3 ;NOTHING THERE, RETURN
PED E,E↔SKIPA ;FIRST EDGE OF WORLD.
L1: ALT2 E,E↔JUMPE E,L3 ;GET AN EDGE.
X1DC 1,E↔Y1DC 2,E
CALL(AIVECT,1,2)
X2DC 1,E↔Y2DC 2,E
CALL(AVECT,1,2)
PVT 1,E↔CALL(YDPY,1) ;CHECK EACH VERTEX FOR YNODES
L2: NVT 1,E↔CALL(YDPY,1)
GO L1
L3: CALL(DPYOUT,GLASS)
POP2J
BEND IIIDPY; BGB 5 FEB 1973 --------------------------------------
DECLARE{XL,XH,YL,YH,TX,TY}
SUBR(YDPY,NODE)
T←15
SIZ←14
LAC 1,NODE
TESTZ 1,NSEW+TBIT1 ;IF INVISIBLE, THEN SKIP THIS ONE
POP1J
PY T,1 ;GET TJOINT OR TEXT OF VERTEX
JUMPE T,POP1J. ;NOTHING THERE
DAC T,NODE
LAC 0,(T)
ANDI 0,17
CAIE 0,$YNODE↔POP1J ;IF IT'S A TJOINT, LEAVE
MARK 1,TBIT1 ;REMEMBER WE'VE BEEN HERE
GO YDPY1
YDPY2: LAC T,NODE↔PY T,T
JUMPE T,POP1J.
YDPY1: DAC T,NODE↔YCODE 1,T
CAIN 1,$TEXTHD↔GO DPYTXT
; CAIN 1,$ARROW↔GO[CALL(DPYARW,T)↔GO YDPY2]
FATAL(ILLEGAL YNODE FOUND)
DPYTXT:
CALL(DPYBRT,[1])
XDC 0,T↔FIXX 0, ;FETCH CO-ORDINATES
DAC 0,TX
YDC 0,T↔FIXX 0,
DAC 0,TY
DPSIZ SIZ,T
PTEXT T,T
SKIPN SIZ↔LACI SIZ,1
CALL(DPYBIG,SIZ)
LAC 0,TY
DPYTX2: CAMGE 0,YH ;MAKE SURE IT'S WITHIN WINDOW
CAMGE 0,YL
GO DPYTX3
CALL AIVECT,TX,TY ;POSITION IT
DPYTX4: MOVEI 0,1(T)
CALL DPYSTR,0 ;DISPLAY IT (THIS MAY OVERFLOW EAST)
TESTZ T,CONBIT ;IS IT CONTINUED?
GO [ TCCW T,T ;YES, GET NEXT LINE
JUMPN T,DPYTX4 ;MAKE SURE THERE'S SOMETHING THERE
FATAL<Missing continuation of text node.> ]
DPYTX3: TCCW T,T ;GET NEXT TEXT NODE
JUMPE T,YDPY2 ;END OF LINE
; HRREI 0,-20 ;THIS REALLY SHOULD BE SIZE DEPENDENT
HRRZ 0,CHRSIZ(SIZ)
MOVN
ADDB 0,TY ;INCREMENT
GO DPYTX2
ENDR YDPY;-----------------------------------------------------------
CHRSIZ: 20 ;0 (SAME AS 2)
20 ;1
30 ;2
34 ;3
40 ;4
60 ;5
100 ;6
140 ;7
SUBR(VDPY,VERTEX) ;SPECIAL VERTEX DISPLAY *
LAC 1,VERTEX
TESTZ 1,NSEW+PZZ↔POP1J
XDC 0,1↔FIXX↔SUBI VERNX↔PUSH P,0
YDC 0,1↔FIXX↔SUBI VERNY↔PUSH P,0↔PUSHJ P,AIVECT
CALL(DPYBIG,[1])↔CALL(DPYBRT,[3])
CALL(IDPY,VERTEX)
CALL(DPYBIG,[2])↔CALL(DPYBRT,[2])
POP1J
ENDR VDPY;9-JAN-73(BGB)9-FEB-73(BGB)
SUBR(EDPY,EDGE) ;SPECIAL EDGE DISPLAY *
CALL(DPYBIG,[1])↔CALL(DPYBRT,[3])
LAC 2,EDGE
PVT 1,2
TESTZ 1,NSEW!PZZ↔GO L1
XDC 0,1↔FIXX↔DAC X
YDC 0,1↔FIXX↔DAC Y
CALL AIVECT,X,Y
CALL (DTYO,["+"])
CALL AIVECT,X,Y
L1: LAC 2,EDGE
NVT 1,2
TESTZ 1,NSEW!PZZ↔GO L2
XDC 0,1↔FIXX↔ADDM X↔PUSH P,0
YDC 0,1↔FIXX↔ADDM Y↔PUSH P,0
CALL AVECT
CALL (DTYO,["-"])
L2: LAC 2,EDGE
LAC X↔ASH -1↔PUSH P,0
LAC Y↔ASH -1↔PUSH P,0
CALL AIVECT
CALL IDPY,EDGE
CALL (DPYBIG,[2])
CALL (DPYBRT,[2])
POP1J
DECLARE{X,Y}
ENDR EDPY;9-FEB-73(BGB),9-FEB-73(BGB)
SUBR(FDPY,FACE) ;Special Face display *
EXTERN ECCW
LAC 1,FACE↔DAC 1,F
TEST 1,FBIT↔POP1J
PED 2,1↔DAC 2,E↔DAC 2,E0
SETZM I
CALL(DPYBIG,[1])
CALL(DPYBRT,[3])
SKIPN E↔GO[LAC 1,F↔PFACE 1,1↔PVT 1,1↔GO VDPY+1]
L1: AOS I↔LAC 2,E↔TEST 2,VISIBLE↔GO L2
X1DC 0,2↔DAC 0,X
Y1DC 1,2↔DAC 1,Y
CALL(AIVECT,0,1)↔LAC 2,E
X2DC 0,2↔ADDM 0,X
Y2DC 1,2↔ADDM 1,Y
CALL(AVECT,0,1)
LAC 0,X↔ASH 0,-1↔SUBI 0,VERNX
LAC 1,Y↔ASH 1,-1↔SUBI 1,VERNY
CALL(AIVECT,0,1)
CALL(DECDPY,I)
L2: CALL(ECCW,E,F)
CAMN 1,E↔GO L3↔DAC 1,E
CAME 1,E0↔GO L1
L3: CALL(DPYBRT,[2])
CALL(DPYBIG,[2])
POP1J
DECLARE{F,E,E0,X,Y,I}
ENDR FDPY;9-FEB-73(BGB)
SUBR(IDPY,NODE) ;Identifier display. *
;--------------------------------------------------------------------
EXTERN CAMERA,NTYPE,NNAMES
CALL(NTYPE,NODE)↔CAIGE 1,$BODY↔GO L5
LAC 1,NODE↔SETZ 2,
TESTZ 1,BBIT↔GO[
SKIPE 13,-2(1)↔GO[
LAC 14,-1(1)↔DZM 15
CALL(DPYSTR,[13])↔POP1J]
L1: CW 1,1↔TESTZ 1,BBIT↔AOJA 2,L1
AOS 2↔PUSH P,2↔CALL(DTYO,["B"])
CALL(DECDPY)↔POP1J]
TESTZ 1,FBIT↔GO[
L2: NFACE 1,1↔TESTZ 1,FBIT↔AOJA 2,L2
AOS 2↔PUSH P,2↔CALL(DTYO,["F"])
CALL(DECDPY)↔POP1J]
TESTZ 1,EBIT↔GO[
L3: NED 1,1↔TESTZ 1,EBIT↔AOJA 2,L3
AOS 2↔PUSH P,2↔CALL(DTYO,["E"])
CALL(DECDPY)↔POP1J]
TESTZ 1,VBIT↔GO[
L4: NVT 1,1↔TESTZ 1,VBIT↔AOJA 2,L4
AOS 2↔PUSH P,2↔CALL(DTYO,["V"])
CALL(DECDPY)↔POP1J]
CALL NTYPE,NODE
L5: CALL DPYSTR,NNAMES(1)
LAC 1,NODE↔CAMN 1,UNIVERSE↔POP1J
$TYPE 2,1↔DZM 5 ;NODE - TYPE - COUNT.
LAC 3,UNIVERSE↔SON 3,3↔DAC 3,4 ;SON0 - SON.
CAME 1,4↔GO[$TYPE 0,4↔CAMN 0,2↔AOS 5↔SIS 4,4
CAME 3,4↔GO .-1↔GO .+1]↔AOS 5
CALL(DECDPY,5)
POP1J
ENDR IDPY;2/4/73(BGB)------------------------------------------------
END